package com.bt7274.pojo;

import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 用户下载统计信息表
 * </p>
 *
 * @author hp
 * @since 2025-06-12
 */
@TableName("user_exp")
public class UserExp implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID（主键）
     */
    private String id;

    /**
     * 分享率（精确到小数点后2位）
     */
    private BigDecimal ratio;

    /**
     * 经验值（升级系统）
     */
    private Integer experience;

    /**
     * BT币余额
     */
    private Integer bt;

    /**
     * 数据最后更新时间
     */
    private LocalDateTime updatedTime;

    /**
     * 用户累计做种时间（秒）
     */
    private Long seedingTime;

    /**
     * 用户累计下载量（字节）
     */
    private Long downloaded;

    /**
     * 用户累计上传量（字节）
     */
    private Long uploaded;

    /**
     * 用户实际下载量（排除重复下载等，字节）
     */
    private Long realDownloaded;

    /**
     * 用户实际上传量（排除重复上传等，字节）
     */
    private Long realUploaded;

    /**
     * 推广策略ID，外键关联到推广策略表
     */
    private Long promotionPolicyId;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public BigDecimal getRatio() {
        return ratio;
    }

    public void setRatio(BigDecimal ratio) {
        this.ratio = ratio;
    }

    public Integer getExperience() {
        return experience;
    }

    public void setExperience(Integer experience) {
        this.experience = experience;
    }

    public Integer getBt() {
        return bt;
    }

    public void setBt(Integer bt) {
        this.bt = bt;
    }

    public LocalDateTime getUpdatedTime() {
        return updatedTime;
    }

    public void setUpdatedTime(LocalDateTime updatedTime) {
        this.updatedTime = updatedTime;
    }

    public Long getSeedingTime() {
        return seedingTime;
    }

    public void setSeedingTime(Long seedingTime) {
        this.seedingTime = seedingTime;
    }

    public Long getDownloaded() {
        return downloaded;
    }

    public void setDownloaded(Long downloaded) {
        this.downloaded = downloaded;
    }

    public Long getUploaded() {
        return uploaded;
    }

    public void setUploaded(Long uploaded) {
        this.uploaded = uploaded;
    }

    public Long getRealDownloaded() {
        return realDownloaded;
    }

    public void setRealDownloaded(Long realDownloaded) {
        this.realDownloaded = realDownloaded;
    }

    public Long getRealUploaded() {
        return realUploaded;
    }

    public void setRealUploaded(Long realUploaded) {
        this.realUploaded = realUploaded;
    }

    public Long getPromotionPolicyId() {
        return promotionPolicyId;
    }

    public void setPromotionPolicyId(Long promotionPolicyId) {
        this.promotionPolicyId = promotionPolicyId;
    }

    @Override
    public String toString() {
        return "UserExp{" +
        "id = " + id +
        ", ratio = " + ratio +
        ", experience = " + experience +
        ", bt = " + bt +
        ", updatedTime = " + updatedTime +
        ", seedingTime = " + seedingTime +
        ", downloaded = " + downloaded +
        ", uploaded = " + uploaded +
        ", realDownloaded = " + realDownloaded +
        ", realUploaded = " + realUploaded +
        ", promotionPolicyId = " + promotionPolicyId +
        "}";
    }
}
